package cn.lf.android.lawfirm.receiver;

import org.json.JSONException;
import org.json.JSONObject;


import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;

import cn.jpush.android.api.JPushInterface;
import cn.lf.android.lawfirm.MainActivity;
import cn.lf.android.lawfirm.MyApplication;
import cn.lf.android.lawfirm.R;
import cn.lf.android.lawfirm.login.LoginActivity;
import cn.lf.android.lawfirm.utils.DebugLog;

/**
 * @version create time：2017-8-24 下午5:01:11 接收推送消息
 */
//public class EBMsgReceiver extends BroadcastReceiver {

//	@SuppressWarnings("static-access")
//	@Override
//	public void onReceive(Context context, Intent intent) {
//		Bundle bundle = intent.getExtras();
//		if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
//			String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
//			DebugLog.d("[EBMsgReceiver] 接收Registration Id : " + regId);
//			// send the Registration Id to your server...
//
//		} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
//			DebugLog.d("[EBMsgReceiver] 接收到推送下来的自定义消息: "+ bundle.getString(JPushInterface.EXTRA_MESSAGE));
//
//		} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
//			// 更新主页消息提示
//			//1.7以后改为IndexActivity
////			MainActivity homeActivity = MyApplication.getInstance().getMainActivity();
////			IndexActivity homeActivity = MyApplication.getInstance().getIndexActivity();
////			if (homeActivity != null) {
////				homeActivity.setNewMsg();
////			}
//			DebugLog.e("[EBMsgReceiver] 接收到推送下来的通知");
//			int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
//			DebugLog.e("[EBMsgReceiver] 接收到推送下来的通知的ID: " + notifactionId);
//			String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
//			DebugLog.e("[EBMsgReceiver] 接收到推送下来的通知类型: " + extras);
//			String content = bundle.getString(JPushInterface.EXTRA_ALERT);
//			DebugLog.e("[EBMsgReceiver] 接收到推送下来的通知内容: " + content);
//
////			MsgInfo msgInfo = parseData(extras);
////			processCustomMessage(context, bundle, msgInfo);
//
//		} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
//			DebugLog.d("[EBMsgReceiver] 用户点击打开了通知");
//
//			// 点击消息，应用在前台时不变，在后台时直接打开应用到前台，应用未运行时启动应用启动页
//			Intent i = new Intent(Intent.ACTION_MAIN);
//			i.addCategory(Intent.CATEGORY_LAUNCHER);
//			// 用ComponentName得到class对象
////			i.setComponent(new ComponentName(context, LoadingActivity.class));
//			// 关键的一步，设置启动模式，两种情况
//			i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
//			context.startActivity(i);
//
//		} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
//			DebugLog.d("[EBMsgReceiver] 用户收到到RICH PUSH CALLBACK: "+ bundle.getString(JPushInterface.EXTRA_EXTRA));
//			// 在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码，比如打开新的Activity，
//			// 打开一个网页等..
//
//		} else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
//			boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
//			if(!connected){
//				NotificationManager manger = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
//				manger.cancelAll();
//
////				MainActivity homeActivity = MyApplication.getInstance().getMainActivity();
////				LoginActivity loginActivity = MyApplication.getInstance().getLoginActivity();
////				if (homeActivity != null) {
////
////					homeActivity.setUpdateUnusual();
////				}else if (loginActivity!=null) {
////					loginActivity.setUpdateUnusual();
////				}
//			}
//			DebugLog.w("[EBMsgReceiver]" + intent.getAction()+ " connected state change to " + connected);
//		} else {
//			DebugLog.d("[EBMsgReceiver] Unhandled intent - "+ intent.getAction());
//		}
//
//	}
//
//	/**
//	 * 自定义推送设置
//	 * @param context
//	 * @param bundle
//	 * @param sound
//	 */
//	private void processCustomMessage(Context context, Bundle bundle, MsgInfo msgInfo) {
//
//		NotificationManager manger = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
//		// 为了版本兼容 选择V7包下的NotificationCompat进行构造
//		NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
//		// Ticker是状态栏显示的提示
//		// builder.setTicker(bundle.getString(JPushInterface.EXTRA_TITLE));
//		// 第一行内容 通常作为通知栏标题
//		builder.setContentTitle("易开单");
//		// 第二行内容 通常是通知正文
//		builder.setContentText(bundle.getString(JPushInterface.EXTRA_ALERT));
//		// 可以点击通知栏的删除按钮删除
//		builder.setAutoCancel(true);
//		// 系统状态栏显示的小图标
//		builder.setSmallIcon(R.drawable.ic_launcher);
//		Notification notification = builder.build();
//
//		// notification.sound = Uri.parse("android.resource://"+context.getPackageName() + "/" + R.raw.generate);
//		notification.sound = Uri.parse(getURL(context, msgInfo.getSound()));
//		builder.setDefaults(NotificationCompat.DEFAULT_VIBRATE| NotificationCompat.DEFAULT_LIGHTS);
//		notification.flags |= Notification.FLAG_AUTO_CANCEL;
//
////		Intent clickIntent = new Intent(); // 点击通知之后要发送的广播
//		Intent clickIntent=null;
//		// int id = (int) (System.currentTimeMillis() / 1000);
//		int id = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
//
//		//判断程序是在前台还是在后台运行
//		if(SystemUtils.isAppAlive(context, MyApplication.getInstance().getPackageName())){
//
//			if (Build.VERSION.SDK_INT>17) {//4.2.2以上
//				clickIntent = new Intent(); // 点击通知之后要发送的广播
//				// 用ComponentName得到class对象
//				setIntent(context, clickIntent, msgInfo);
//				// 关键的一步，设置启动模式，两种情况
//				clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_SINGLE_TOP);
//				clickIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//			}else{//4.2.2以下包括4.2.2
//				clickIntent = new Intent(Intent.ACTION_MAIN); // 点击通知之后要发送的广播
//				clickIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//				clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
//			}
//		}else{
//			clickIntent = new Intent(Intent.ACTION_MAIN); // 点击通知之后要发送的广播
//			// 用ComponentName得到class对象
//			clickIntent.setComponent(new ComponentName(context, LoadingActivity.class));
//			// 关键的一步，设置启动模式，两种情况
//			clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
//			clickIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//		}
//
////		clickIntent.addCategory(MyApplication.getInstance().getPackageName());
//		clickIntent.setAction(JPushInterface.ACTION_NOTIFICATION_OPENED);
//		clickIntent.putExtra(JPushInterface.EXTRA_EXTRA,bundle.getString(JPushInterface.EXTRA_EXTRA));
//
////		PendingIntent contentIntent = PendingIntent.getBroadcast(context, id,clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//		PendingIntent contentIntent = PendingIntent.getActivity(context, id,clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//		notification.contentIntent = contentIntent;
//		manger.notify(id, notification);
//
//	}

	/**
	 * 获取url
	 *
	 * @param type
	 * @return
	 */
//	private String getURL(Context context, int sound) {
//		String url = "android.resource://" + context.getPackageName() + "/";
//		switch (sound) {
//		case 0: // 默认声音
//			url += R.raw.ebdefault;
//			break;
//		case 1: // 订单来了
//			url += R.raw.come;
//			break;
//		case 2:// 上月业绩生成
//			url += R.raw.generate;
//			break;
//		case 3:// 订单完成
//			url += R.raw.complete;
//			break;
//		case 7:// 新的退货单
//			url += R.raw.newback;
//			break;
//
//		default:
//			break;
//		}
//
//		return url;
//	}

//	private void setIntent(Context  context,Intent clickIntent,MsgInfo msgInfo){
////		switch (msgInfo.getType()) {
////		case 1://下单成功
////			clickIntent.setComponent(new ComponentName(context, OrderDetailActivity.class));
////			clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
////			clickIntent.putExtra("Message", "true");
////			clickIntent.putExtra("type", "message");
////			break;
////		case 2://上月概况
////			clickIntent.setComponent(new ComponentName(context, MMSearchActivity.class));
////			clickIntent.putExtra("Search", msgInfo.getLinkParameter());
////			break;
////		case 3://订单完成
////			clickIntent.setComponent(new ComponentName(context, OrderDetailActivity.class));
////			clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
////			clickIntent.putExtra("Message", "true");
////			clickIntent.putExtra("type", "message");
////
////			break;
////		case 7://退货详情
////			clickIntent.setComponent(new ComponentName(context, OrderReturnDetailActivity.class));
////			clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
////			clickIntent.putExtra("Message", "true");
////			clickIntent.putExtra("type", "123");
////			break;
////		case 8://库存
////			clickIntent.setComponent(new ComponentName(context, ProductInfoActivity.class));
////			clickIntent.putExtra("ID", msgInfo.getLinkParameter());
////			break;
////		case 0:
////		case 4:
//////		case 5:
////		case 6:
////			clickIntent.setComponent(new ComponentName(context, MsgCenterActivity.class));
////			break;
////
////		default:
////			break;
////		}
//
//		int type=msgInfo.getType();
//		if(type==1){//下单成功
//			clickIntent.setComponent(new ComponentName(context, OrderDetailWapActivity.class));
//			clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
//			clickIntent.putExtra("order_type", String.valueOf(type));
//			clickIntent.putExtra("notification", "true");
//			clickIntent.putExtra("label", msgInfo.getLabel());
//			clickIntent.putExtra("print", msgInfo.isPrint());
//		}else if(type==2){//上月概况
//			clickIntent.setComponent(new ComponentName(context, MMSearchActivity.class));
//			clickIntent.putExtra("Search", msgInfo.getLinkParameter());
//		}else if(type==3){//订单完成
//			clickIntent.setComponent(new ComponentName(context, OrderDetailWapActivity.class));
//			clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
//			clickIntent.putExtra("order_type", String.valueOf(type));
//			clickIntent.putExtra("notification", "true");
//			clickIntent.putExtra("label", msgInfo.getLabel());
//			clickIntent.putExtra("print", msgInfo.isPrint());
//		}else if(type==7){//退货详情
//			clickIntent.setComponent(new ComponentName(context, OrderReturnDetailWapActivity.class));
//			clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
//			clickIntent.putExtra("notification", "true");
//			clickIntent.putExtra("order_type", String.valueOf(type));
//		}else if(type==8){//库存
//			clickIntent.setComponent(new ComponentName(context, ProductInfoWapActivity.class));
//			clickIntent.putExtra("ID", msgInfo.getLinkParameter());
//			clickIntent.putExtra("order_type", String.valueOf(type));
//			clickIntent.putExtra("notification", "true");
//		}else if(type==0){ //系统消息
//			if(msgInfo.isDetailFalg()){ //跳转到系统消息
//				clickIntent.setComponent(new ComponentName(context, SystemWebView.class));
//				clickIntent.putExtra("Link", msgInfo.getLinkParameter());
//			}else{
//				clickIntent.setComponent(new ComponentName(context,CenterMsgActivity.class));
//			}
//		}else if(type==4||type==6){ //消息列表
//			clickIntent.setComponent(new ComponentName(context, CenterMsgActivity.class));
//		}else {//其他情况
//			if(msgInfo.isDetailFalg()){//公用webView页面
//				clickIntent.setComponent(new ComponentName(context, OtherWebViewActivity.class));
//				clickIntent.putExtra("order_id", msgInfo.getLinkParameter());
//				clickIntent.putExtra("order_type", String.valueOf(type));
//				clickIntent.putExtra("notification", "true");
//				clickIntent.putExtra("detailName", msgInfo.getDetailName());
//			}else{//消息列表
//				clickIntent.setComponent(new ComponentName(context, CenterMsgActivity.class));
//			}
//		}
//	}

	/**
	 * 解析获取的推送类型
	 */
//	private MsgInfo parseData(String data) {
//
//		MsgInfo msgInfo=new MsgInfo();
//		if ("".equals(data) || null == data) {
//			return msgInfo;
//		}
//		try {
//			JSONObject jsonObject = new JSONObject(data);
//			msgInfo.setSound(jsonObject.optInt("sound"));
//			msgInfo.setLinkParameter(jsonObject.optString("linkParameter"));
//			msgInfo.setType(jsonObject.optInt("type"));
//			msgInfo.setLabel(jsonObject.optInt("label"));
//			msgInfo.setPrint(jsonObject.optBoolean("print"));
//		} catch (JSONException e) {
//			e.printStackTrace();
//		}
//		return msgInfo;
//
//	}

//}
